const UserModel = require("../models/user");

let index = async ctx=>{
    /* 进入首页的时候作一个登录判断 登录了直接进入产品页面 没有登录继续在登录页面 */
    if(ctx.cookies.get("name")){
        await ctx.render("user");
    } else {
        // 渲染login.js页面
        await ctx.render("login");
    }
}
// 渲染登录页面
let login = async ctx=>{
    await ctx.render("login");
}
// 渲染注册页面
let register = async ctx=>{
    await ctx.render("register");
}
// 登录
let doLogin = async ctx=>{
    //从post请求中获取数据
    let{user,pwd } = ctx.request.body;
    let data = await UserModel.find({name:user,pwd:pwd});
    if(data.length> 0) {
        ctx.cookies.set("name",user,{maxAge:1000*60*60})
        ctx.redirect("/user");
    } else {
        ctx.body = "<script>alert('用户名或密码不正确');location.href='/login' </script>"
    }
}
// 注册
let doRegister = async ctx=>{
    //获取注册输入的name,pwd
    let{name,pwd} = ctx.request.body;
    //到数据库中查询是否存在
    let userdata = await UserModel.find({name:name});
    // 如果存在就去登录
    if(userdata.length > 0){
        ctx.body ="<script>alert('您已经注册过了,请登录');location.href='/login'</script>"
    } else {
        //不存在就注册
         // 保存到数据库   
        let data = new UserModel({name,pwd});
        data.save(err=>{
            if(err) throw err;
        })
        ctx.body= "<script>alert('注册成功，请登录');location.href='/login'</script>"
    }
}
//渲染user
let user = async ctx=>{
    //从数据库中查询所有数据
    let data = await UserModel.find({});
    await ctx.render("user",{data:data});
}
// 删除
let doDelete = async ctx=>{
    //要删除哪一个呢?
    let id = ctx.request.query.id;
    await UserModel.deleteOne({_id:id});
    ctx.redirect("/user");

}
// 渲染add页面
let add = async ctx=>{
    await ctx.render("add");
}
// 添加
let doAdd = async ctx=>{
    let {name,pwd} = ctx.request.body;
    let data = new UserModel({name,pwd});
    data.save(err=>{
        if(err) throw err;
    });
    ctx.redirect("/user");
    

}
//渲染edit页面
let edit = async ctx=>{
    let id = ctx.request.query.id;
    let data = await UserModel.find({_id:id});
    await ctx.render("edit",{data:data[0]});
}
// 修改数据时需要id,页面如何传这个id呢
let doEdit= async ctx=>{
    let {id,name,pwd} = ctx.request.body;
    // 跟新数据
    await UserModel.updateMany({_id:id},{name,pwd});
     ctx.redirect("/user");


}

module.exports= {
    index,
    doLogin,
    login,
    register,
    doRegister,
    user,
    doDelete,
    add,
    doAdd,
    edit,
    doEdit
}